/**
 * 2009-10-25 下午12:22:07 
 * esignature
 * com.smc.server
 * UserService
 */
package com.smc.server;

import java.util.List;

import com.smc.domain.model.Authentication;
import com.smc.domain.model.Hospital;
import com.smc.domain.model.User;

/**
 * @author chenheng
 * @version 0.0.1
 * 用户服务接口
 */
public interface UserService {
	/**
	 * 用户登陆
	 * @param username
	 * @param password
	 * @return
	 */
	public User login_IG_IG_IG_user(String username,String password);
	/**
	 * 取得用户的所有授权信息
	 * @param user
	 * @return
	 */
	public List<Authentication> fetch_IG_IG_IG_authentication(User user);
	/**
	 * 医院保存特定医生
	 * @param user
	 */
	public void save_HO_US_SA_user(User user);
	/**
	 * 操作员取得指定医院的所有医生基本信息
	 * @param hospitalUuid
	 * @return
	 */
	public List<User> fetch_OP_US_FE_user(String hospitalUuid);
	/**
	 * 未注册用户取得所有医院信息
	 * @return
	 */
	public List<Hospital> fetch_IG_IG_IG_hospital();
	/**
	 * 未注册用户注册
	 *
	 */
	public void save_IG_IG_IG_user(User user);
	/**
	 * 用户更新信息
	 * @param user
	 */
	public void save_IG_US_SA_user(String uuid,String fileName);
	/**
	 * 取得用户头相系统目录
	 * @return
	 */
	public String get_IG_IG_IG_HeaderIconPath();
	/**
	 * 取得用户证书系统目录
	 * @return
	 */
	public String get_IG_IG_IG_Cert2Path();
	/**
	 * 管理员用户列出未认证用户
	 * @param verified	是否认证
	 * @param pageIndex	当前页数
	 * @param pageSize	每页显示的条目数
	 * @return
	 */
	public List<User> fetch_AD_US_FE_user(boolean verified,int pageIndex,int pageSize);
	/**
	 * 管理员用户统计（未）审核用户数
	 * @param verified
	 * @return
	 */
	public int count_AD_US_FE_user(boolean verified);
	/**
	 * 管理员用户列出所有用户
	 * @param pageIndex	当前页数
	 * @param pageSize	每页显示的条目数
	 * @return
	 */
	public List<User> fetch_AD_US_FE_user(int pageIndex,int pageSize);
	/**
	 * 管理员用户统计用户数
	 * @return
	 */
	public int count_AD_US_FE_user();
	/**
	 * 管理员用户查询特定名称的用户
	 * @param firstName	 	名	
	 * @param lastName	姓
	 * @param pageIndex		当前页面数
	 * @param pageSize		每页显示的条目数
	 * @return
	 */
	public List<User> fetch_AD_US_FE_user(String firstName,String lastName,int pageIndex,int pageSize);
	/**
	 * 管理员统计特定名称的用户数
	 * @param firstName		名
	 * @param lastName	姓
	 * @return
	 */
	public int count_AD_US_FE_user(String firstName,String lastName);
	/**
	 * 管理员用户根据主键取得用户
	 * @param uuid	用户主键
	 * @return
	 */
	public User fetch_AD_US_FE_user(String uuid);
	/**
	 * 
	 * 方法名：fetch_IG_IG_FE_user
	 * 
	 * 用途：
	 * 
	 * @param uuid
	 * @return
	 */
	public User fetch_IG_IG_FE_user(String uuid);
	/**
	 * 管理员用户授权
	 * @param user 被授权的用户
	 * @param authes 用户的权限值数组
	 */
	public void save_AD_AU_SA_authentication(User user,int[] authes);
	/**
	 * 检查用户名是否存在
	 * @param username	用户名
	 * @return
	 */
	public User fetch_IG_IG_IG_user(String username);
	/**
	 * 
	 * 方法名：remove_AD_RE_US_user
	 * 
	 * 用途：删除用户
	 * 
	 * @param uuid
	 */
	public void remove_AD_US_RE_user(String uuid);
	/**
	 * 
	 * 方法名：update_IG_IG_SA_user
	 * 
	 * 用途：
	 * 
	 * @param user
	 */
	public void update_IG_IG_SA_user(User user);
}
